home *** CD-ROM | disk | FTP | other *** search
Wrap
<?php /* +-------------------------------------------------------------------------- | IBFORUMS v1 | ======================================== | by Matthew Mecham and David Baxter | (c) 2001,2002 IBForums | http://www.ibforums.com | ======================================== | Web: http://www.ibforums.com | Email: phpboards@ibforums.com | Licence Info: phpib-licence@ibforums.com +--------------------------------------------------------------------------- | | > CSS management functions | > Module written by Matt Mecham | > Date started: 4th April 2002 | | > Module Version Number: 1.0.0 +-------------------------------------------------------------------------- */ $idx = new ad_settings(); class ad_settings { var $base_url; function ad_settings() { global $IN, $root_path, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP; switch($IN['code']) { case 'wrapper': $this->list_sheets(); break; case 'add': $this->do_form('add'); break; case 'edit': $this->do_form('edit'); break; case 'doadd': $this->save_wrapper('add'); break; case 'doedit': $this->save_wrapper('edit'); break; case 'remove': $this->remove(); break; case 'export': $this->export(); break; //------------------------- default: $this->list_sheets(); break; } } function export() { global $IN, $root_path, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP; if ($IN['id'] == "") { $ADMIN->error("You must specify an existing CSS ID, go back and try again"); } //+------------------------------- $DB->query("SELECT * from ibf_css WHERE cssid='".$IN['id']."'"); if ( ! $row = $DB->fetch_row() ) { $ADMIN->error("Could not query the information from the database"); } //+------------------------------- $archive_dir = $INFO['base_dir']."/archive_out"; $css_file = $INFO['base_dir']."/style_sheets/stylesheet_{$row['cssid']}.css"; if (!is_dir($archive_dir)) { $ADMIN->error("Could not locate $archive_dir, is the directory there?"); } if (!is_writeable($archive_dir)) { $ADMIN->error("Cannot write in $archive_dir, CHMOD via FTP to 0755 or 0777 to enable this script to write into it. IBF cannot do this for you"); } if (!file_exists($css_file)) { $ADMIN->error("Cannot locate $css_file, please ensure that the file is in the proper directory"); } //+------------------------------- // Attempt to copy the files to the // working directory... //+------------------------------- $l_name = preg_replace( "/\s{1,}/", "_", $row['css_name'] ); $file_name = "css-".$l_name.".css"; if ( ! copy($css_file, $archive_dir."/".$file_name) ) { $ADMIN->error("COPY FAILED ON STYLE SHEET $file_name, maybe the script has insufficient permissions?"); } @chmod($archive_dir."/".$file_name, 0777); $ADMIN->done_screen("Style Sheet Export Created<br><br>You can download the CSS resource <a href='archive_out/$file_name' target='_blank'>here</a>", "Manage Style Sheets", "act=style" ); } //------------------------------------------------------------- // REMOVE WRAPPERS //------------------------------------------------------------- function remove() { global $IN, $root_path, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP, $HTTP_POST_VARS; //+------------------------------- if ($IN['id'] == "") { $ADMIN->error("You must specify an existing stylesheet ID, go back and try again"); } $DB->query("DELETE FROM ibf_css WHERE cssid='".$IN['id']."'"); @unlink( $root_path."style_sheets/stylesheet_{$IN['id']}.css" ); $std->boink_it($SKIN->base_url."&act=style"); exit(); } //------------------------------------------------------------- // ADD / EDIT WRAPPERS //------------------------------------------------------------- function save_wrapper( $type='add' ) { global $IN, $root_path, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP, $HTTP_POST_VARS; //+------------------------------- if ($type == 'edit') { if ($IN['id'] == "") { $ADMIN->error("You must specify an existing CSS ID, go back and try again"); } $file = $root_path."style_sheets/stylesheet_".$IN['id'].".css"; if ( ! is_writeable($file) ) { $ADMIN->error("IBF does not have permission to write to that file. Try setting the CHMOD on $file to 0777 and try again. You can do this via FTP"); } } if ($IN['name'] == "") { $ADMIN->error("You must specify a name for this stylesheet"); } if ($IN['css'] == "") { $ADMIN->error("You can't have an empty stylesheet, can you?"); } $css = stripslashes($HTTP_POST_VARS['css']); $barney = array( 'css_name' => stripslashes($HTTP_POST_VARS['name']), 'css_text' => $css, ); if ($type == 'add') { $db_string = $DB->compile_db_insert_string( $barney ); $DB->query("INSERT INTO ibf_css (".$db_string['FIELD_NAMES'].") VALUES(".$db_string['FIELD_VALUES'].")"); $new_id = $DB->get_insert_id(); $nfile = $root_path."style_sheets/stylesheet_".$new_id.".css"; if ($fh = fopen( $nfile, 'w' ) ) { fwrite( $fh, $css, strlen($css) ); fclose( $fh ); @chmod( $nfile, 0777 ); } else { $DB->query("DELETE FROM ibf_css WHERE cssid='$new_id'"); $ADMIN->error("Could not prepare $file for creation - please check the CHMOD value of the 'style_sheets' directory and where possible CHMOD to 0777 via FTP"); } $std->boink_it($SKIN->base_url."&act=style"); exit(); } else { $db_string = $DB->compile_db_update_string( $barney ); if ($fh = fopen( $file, 'w' ) ) { fwrite( $fh, $css, strlen($css) ); fclose( $fh ); @chmod( $file, 0777 ); $DB->query("UPDATE ibf_css SET $db_string WHERE cssid='".$IN['id']."'"); $ADMIN->done_screen("Stylesheet updated", "Manage Style Sheets", "act=style" ); } else { $ADMIN->error("Could not prepare $file for writing - please check the CHMOD value of the 'style_sheets' directory"); } } } //------------------------------------------------------------- // ADD / EDIT WRAPPERS //------------------------------------------------------------- function do_form( $type='add' ) { global $IN, $root_path, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP; //+------------------------------- if ($IN['id'] == "") { $ADMIN->error("You must specify an existing wrapper ID, go back and try again"); } //+------------------------------- $DB->query("SELECT cssid, css_name FROM ibf_css WHERE cssid='".$IN['id']."'"); if ( ! $cssinfo = $DB->fetch_row() ) { $ADMIN->error("Could not query the CSS details from the database"); } //+------------------------------- $file = $root_path."style_sheets/stylesheet_".$IN['id'].".css"; if ( ! file_exists($file) ) { $ADMIN->error("Could not load the stylesheet. No file found at $file"); } if ( ! is_readable($file) ) { $ADMIN->error("IBF does not have permission to read from that file. Try setting the CHMOD on $file to 0777 and try again. You can do this via FTP"); } //+------------------------------- $fh = fopen( $file, 'r' ); $css = fread( $fh, filesize($file) ); fclose($fh); if ($type == 'add') { $code = 'doadd'; $button = 'Create StyleSheet'; $cssinfo['css_name'] = $cssinfo['css_name'].".2"; } else { // Availability test if ( ! is_writeable($file) ) { $ADMIN->error("IBF does not have permission to write to that file. Try setting the CHMOD on $file to 0777 and try again. You can do this via FTP"); } $code = 'doedit'; $button = 'Edit Stylesheet'; } //+------------------------------- $ADMIN->page_detail = "You may use CSS fully when adding or editing stylesheets."; $ADMIN->page_title = "Manage Style Sheets"; //+------------------------------- $ADMIN->html .= $SKIN->js_no_specialchars(); $ADMIN->html .= $SKIN->start_form( array( 1 => array( 'code' , $code ), 2 => array( 'act' , 'style' ), 3 => array( 'id' , $IN['id'] ), ), "theAdminForm", "onSubmit=\"return no_specialchars('csssheet')\"" ); //+------------------------------- $SKIN->td_header[] = array( " " , "20%" ); $SKIN->td_header[] = array( " " , "80%" ); //+------------------------------- $ADMIN->html .= $SKIN->start_table( $button ); $ADMIN->html .= $SKIN->add_td_row( array( "Stylesheet Title", $SKIN->form_input('name', $cssinfo['css_name']), ) ); $ADMIN->html .= $SKIN->add_td_row( array( "Content", $SKIN->form_textarea('css', $css, "70", "30"), ) ); $ADMIN->html .= $SKIN->end_form($button); $ADMIN->html .= $SKIN->end_table(); //+------------------------------- //+------------------------------- $ADMIN->output(); } //------------------------------------------------------------- // SHOW STYLE SHEETS //------------------------------------------------------------- function list_sheets() { global $IN, $root_path, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP; $form_array = array(); $show_array = array(); $ADMIN->page_detail = "You may add/edit and remove stylesheets.<br><br>Style Sheets are CSS files. This is where you can change the colours, fonts and font sizes throughout the board."; $ADMIN->page_title = "Manage Stylesheets"; //+------------------------------- $SKIN->td_header[] = array( "Title" , "40%" ); $SKIN->td_header[] = array( "Allocation" , "30%" ); $SKIN->td_header[] = array( "Export" , "10%" ); $SKIN->td_header[] = array( "Edit" , "10%" ); $SKIN->td_header[] = array( "Remove" , "10%" ); //+------------------------------- $DB->query("SELECT DISTINCT(c.cssid), c.css_name, s.sname from ibf_css c, ibf_skins s WHERE s.css_id=c.cssid ORDER BY c.css_name ASC"); $used_ids = array(); if ( $DB->get_num_rows() ) { $ADMIN->html .= $SKIN->start_table( "Current Stylesheets In Use" ); while ( $r = $DB->fetch_row() ) { $show_array[ $r['cssid'] ] .= stripslashes($r['sname'])."<br>"; if ( in_array( $r['cssid'], $used_ids ) ) { continue; } $ADMIN->html .= $SKIN->add_td_row( array( "<b>".stripslashes($r['css_name'])."</b>", "<#X-{$r['cssid']}#>", "<center><a href='".$SKIN->base_url."&act=style&code=export&id={$r['cssid']}'>Export</a></center>", "<center><a href='".$SKIN->base_url."&act=style&code=edit&id={$r['cssid']}'>Edit</a></center>", "<i>Deallocate before removing</i>", ) ); $used_ids[] = $r['cssid']; $form_array[] = array( $r['cssid'], $r['css_name'] ); } foreach( $show_array as $idx => $string ) { $string = preg_replace( "/<br>$/", "", $string ); $ADMIN->html = preg_replace( "/<#X-$idx#>/", "$string", $ADMIN->html ); } $ADMIN->html .= $SKIN->end_table(); } if ( count($used_ids) > 0 ) { $DB->query("SELECT cssid, css_name FROM ibf_css WHERE cssid NOT IN(".implode(",",$used_ids).")"); if ( $DB->get_num_rows() ) { $SKIN->td_header[] = array( "Title" , "70%" ); $SKIN->td_header[] = array( "Export" , "10%" ); $SKIN->td_header[] = array( "Edit" , "10%" ); $SKIN->td_header[] = array( "Remove" , "10%" ); $ADMIN->html .= $SKIN->start_table( "Current Unallocated Stylesheets" ); $ADMIN->html .= $SKIN->js_checkdelete(); while ( $r = $DB->fetch_row() ) { $ADMIN->html .= $SKIN->add_td_row( array( "<b>".stripslashes($r['css_name'])."</b>", "<center><a href='".$SKIN->base_url."&act=style&code=export&id={$r['cssid']}'>Export</a></center>", "<center><a href='".$SKIN->base_url."&act=style&code=edit&id={$r['cssid']}'>Edit</a></center>", "<center><a href='javascript:checkdelete(\"act=style&code=remove&id={$r['cssid']}\")'>Remove</a></center>", ) ); $form_array[] = array( $r['cssid'], $r['css_name'] ); } $ADMIN->html .= $SKIN->end_table(); } } //+------------------------------- //+------------------------------- $ADMIN->html .= $SKIN->start_form( array( 1 => array( 'code' , 'add' ), 2 => array( 'act' , 'style' ), ) ); $SKIN->td_header[] = array( " " , "40%" ); $SKIN->td_header[] = array( " " , "60%" ); $ADMIN->html .= $SKIN->start_table( "Create New Stylesheet" ); //+------------------------------- $ADMIN->html .= $SKIN->add_td_row( array( "<b>Base new stylesheet on...</b>" , $SKIN->form_dropdown( "id", $form_array) ) ); $ADMIN->html .= $SKIN->end_form("Create new stylesheet"); $ADMIN->html .= $SKIN->end_table(); //+------------------------------- //+------------------------------- $ADMIN->output(); } } ?>